//testbench    //生成特定频率的时钟
`timescale  1ns / 1ps   //设定时间单位/时间精度

module testbench_demo;  //定义模块名

parameter PERIOD  = 10;  //定义常量

// inputs          //输入
reg clk=0;         //时钟信号
reg rst_n=0;       //复位信号
reg [3:0] i_data;
reg [3:0] q_data;
reg ready_in=0;
reg [1:0] sel=0;

// outputs          //输出网线型
wire [4:0] out_data;
wire ready_out;

// generate clk      
initial             //产生激励
begin
    forever #(PERIOD/2)  clk=~clk;  //frequency？ 每5个单位时间反转一次
end

//generate inputs
initial
begin
    #(PERIOD*2) rst_n = 1;
    #200
    i_data = 4'd5;
    q_data = 4'ha;
    #100
    ready_in = 1;
    sel = 2'b10;
end

//例化
demo u_demo(
    .clk(clk),
    .rst_n(rst_n),
    .i_data(i_data),
    .q_data(q_data),
    .ready_in(ready_in),
    .sel(sel),
    .out_data(out_data),
    .ready_out(ready_out)
);

endmodule                    //例化待测模块，并且将模块端口与激励模块端口相连接